#include <vector>

using namespace std;
class Solution
{
public:
    void rotate(vector<int> &nums, int k)
    {
        // 思路：先整个数组轮转，然后把前k个字符翻转存储，把后面的字符翻转
        k = k % nums.size();               // 防止k大于数组长度
        resever(nums, 0, nums.size() - 1); // 整个数组翻转
        resever(nums, 0, k - 1);           // 翻转前k个字符
        resever(nums, k, nums.size() - 1); // 翻转后面的字符
    }
    void resever(vector<int> &nums, int left, int right) // 翻转数组
    {
        while (left < right)
        {
            int temp = nums[left];
            nums[left] = nums[right];
            nums[right] = temp;
            ++left;
            --right;
        }
    }
};